/*
 * file name:creeps.h
 *
 * This is the abstract class file for creeps
 *
 *  Created on: Oct 13, 2009
 *      Author: Corey
 */

#include "state.h"

#ifndef CREEPS_H_
#define CREEPS_H_

class Creep
{
public:
	virtual void die() =0;
	virtual void move() =0;
	virtual void set_health(int) =0;
	virtual void set_x(int) =0;
	virtual void set_y(int) =0;
	virtual void set_movespeed(int) =0;
	virtual void set_defense(int) =0;
	virtual int get_health() =0;
	virtual int get_width() =0;
	virtual int get_height() =0;
	virtual int get_x() =0;
	virtual int get_y() =0;
	virtual int get_movespeed() =0;
	virtual int get_defense() =0;
	virtual ~Creep(){}
	//TODO: Add Creep Vector

};

class BasicCreep: public Creep
{

private:
	//Basic Creep Stats
	int x, y, health, movespeed, defense, width, height;

public:
	BasicCreep(); //Constructor
	~BasicCreep(); //Deconstructor
	void die();
	void move();

	//Setter Functions
	void set_health(int);
	void set_x(int p){x = p;};
	void set_y(int p){x = p;};
	void set_movespeed(int p){movespeed = p;};
	void set_defense(int p){defense = p;};

	//Getter Functions
	int get_health(){return health;};
	int get_x(){return x;};
	int get_y(){return y;};
	int get_width(){return width;};
	int get_height(){return height;};
	int get_defense(){return defense;};
	int get_movespeed(){return movespeed;};
};


//TODO: Finialize the CreepState substate
class CreepState
{
	//Todo: Finish creep substate class
};

#endif /* CREEPS_H_ */
